传输层 Transport Layer

传输层的作用

传输层提供端到 (进程到进程)的服务,相比于网络层的主机到主机的服务,粒度更小。

UDP

TCP

TCP

TCP 被设计用于在 不可靠 的 IP 层实现 可靠传输。它面向连接并只支持一对一通信,提供 可靠有序无丢失不重复 的全双工通信。同时,它还包含了 流量控制拥塞控制 等机制。

TCP Segment

可靠传输机制

TCP Establishment

一个新的连接建立时,初始序列号(ISN / initial sequence number)生成器会生成一个新的 32 位的 ISN。
TCP 建立连接的过程被称为三次握手协议,具体过程如下图所示

  1. 发送 Synchronize 请求,并提供 ISN(记为 m)
  2. 返回同样的 Synchronize 请求,并提供 ISN(记为 n),请求接收 m+1 的包
  3. 发送数据包,序号标记为 m+1,并请求对方序号为 n+1 的包

有如下几点需要注意:

  1. 在第二次握手时,Server 就会分配资源以等待第三次握手的数据,有受到 SYN 泛洪攻击 的风险。
  2. 若两个 Host 都发送了建立连接的请求,TCP 协议会采用最早到达的那个请求,并 不会 在两个端之间建立 重复的连接(因为其本身是全双工通信)。
  3. 若在之前通信还未结束的情况下请求建立新的连接,则会经历下图所示的过程(在 ACK 不正确的情形下发送 RST 关闭上一次的链接):
TCP Release

TCP 连接的释放过程如下图所示:

  1. Initiator 发送一个 FIN 信号,请求结束
  2. Receiver 返回一个 ACK 继续请求数据,直至数据接收完成
  3. Receiver 发送 FIN 信号
  4. Initiator 发送 ACK 表示收到,并等待 2MSL 的时间,若期间没有收到数据包,则关闭连接
  5. Receiver 在收到 ACK 后关闭连接

流量控制机制

具体交互方式如下图所示:

拥塞控制机制